% mins.sty
% Take minutes of meetings
% 2005-Sept-01 Jim Hefferon jhefferon (at) smcvt.edu
% --- Class structure: identification part
% ---
\ProvidesClass{vstubachelor}
\NeedsTeXFormat{LaTeX2e}
% --- Class structure: declaration of options part
% ---
% This class extends the article class
% Read all the documentclass options; pass them to article,
% unless the file "<currentoption>.min" exists, then it is loaded
\DeclareOption*{\InputIfFileExists{\CurrentOption.min}{}{%
\PassOptionsToClass{\CurrentOption}{extreport}}}
% --- Class structure: execution of options part
% ---
\ProcessOptions \relax
% --- Class structure: declaration of options part
% ---
\LoadClass{extreport}

% ==============================
% 1) Работа должна быть распечатана на одной стороне листа. Шрифт Times New Roman, 14, интервал – 1,5.  Текст работы выравнивают «по ширине».
%==============================
\RequirePackage[english, russian]{babel}
\RequirePackage[utf8]{inputenc}
\RequirePackage[T2A, T1]{fontenc} 
\RequirePackage {textcase}
\RequirePackage{setspace}
\RequirePackage{Times}
\onehalfspacing

% ==============================
% 2) Листы записки должны иметь сквозную нумерацию. Номер страниц проставляют арабскими цифрами внизу по центру, без точки. На титульном листе и задании номер страницы не ставят, но включают их в общую нумерацию страниц. Листы формата А 3 нумеру­ются как одна страница.
% ==============================
\RequirePackage{fancyhdr} 

\fancypagestyle{plain}{%
	\fancyhf{}
	\setlength{\headheight}{0.65cm}
	\setlength{\headwidth}{\textwidth}
	\setlength{\headsep}{-0.5cm}
	\fancyhead[C]{\thedocumentcode}
	\fancyhead[R]{} 
	\fancyfoot[C]{\thepage}
	\renewcommand{\headrulewidth}{0pt}
}

% ==============================
% 3) Текст оформляют с соблюдением следующих размеров полей: левое – 30 мм, пра­вое – 10 мм, верхнее – 15 мм нижнее – 20 мм. Абзацы в тексте начинают отступом, равным 15 мм.
% ==============================
\RequirePackage[left=3.0cm,right=1.0cm,
    top=1.5cm,bottom=2cm,bindingoffset=0cm]{geometry}
\setlength{\parindent}{1.5cm}
\RequirePackage {indentfirst} % Каждый абзац с красной строки

% ==============================
% 4) Опечатки, описки и графические неточности допускается исправлять закрашиванием белой краской с нанесением затем исправленного текста.
% ==============================

% ==============================
% 5) В пояснительной записке применяются, как правило, арабские цифры. Римские цифры следует применять только для обозначения кварталов, года, полугодия, валентности химических элементов, сорта.
% ==============================

% ==============================
% 6) Текст основной части записки разделяют на разделы и подразделы. Разделы должны иметь порядковые номера в пределах основной части записки, обозначенные арабскими цифрами без точки и записанные с абзацного отступа. Номер подраздела состоит из номеров раздела и подраздела, разделенных точкой. В конце номера подраздела точка не ставится. "Введение" и "Заключение" не нумеруются.
% ==============================

\RequirePackage[compact]{titlesec}
\setcounter{secnumdepth}{3}
% Отступы и формат для глав
\newlength{\secspacecorrection}
\setlength{\secspacecorrection}{-0.5\baselineskip}
\newlength{\secspace}
\newlength{\subsecspace}
\newlength{\subsubsecspace}

\newcommand{\correctsecspace}
{
	\setlength{\secspace}{0em}
	\setlength{\subsecspace}{0em}
	\setlength{\subsubsecspace}{0em}
}

\correctsecspace

\newlength{\sectionlineskip}
\setlength{\sectionlineskip}{0.5\baselineskip}

\titlespacing{\chapter}{\parindent}{\sectionlineskip}{\sectionlineskip}
\titlespacing{\section}{\parindent}{\sectionlineskip}{\sectionlineskip}
\titlespacing{\subsection}{\parindent}{\sectionlineskip}{\sectionlineskip}
\titlespacing{\subsubsection}{\parindent}{\sectionlineskip}{\sectionlineskip}

\titleformat{\chapter}{\normalfont}{\thechapter}{14pt}{\normalfont}
\titleformat{\section}{\normalfont}{\thesection}{14pt}{\normalfont}
\titleformat{\subsection}{\normalfont}{\thesubsection}{14pt}{\normalfont}
\titleformat{\subsubsection}{\normalfont}{\thesubsubsection}{14pt}{\normalfont}

\let\OldChapter\chapter
\def\chapter
{
	\setlength{\secspace}{\secspacecorrection}
	\OldChapter
}

\let\OldSection\section
\def\section
{
	\vspace{\secspace}
	\setlength{\subsecspace}{\secspacecorrection}
	\setlength{\secspace}{0em}
	\OldSection
}

\let\OldSubsection\subsection
\def\subsection
{
	\vspace{\subsecspace}
	\setlength{\subsubsecspace}{\secspacecorrection}
	\setlength{\subsecspace}{0em}
	\OldSubsection
}

\let\OldSubsubsection\subsubsection
\def\subsubsection
{
	\vspace{\subsubsecspace}
	\setlength{\subsubsecspace}{0em}
	\OldSubsubsection
}



%Введение
\newcommand{\introduction}
{
	\chapter*{Введение}
	\addcontentsline{toc}{section}{Введение}
}

%Заключение
\newcommand{\conclusion}
{
	\chapter*{Заключение}
	\addcontentsline{toc}{section}{Заключение}
}

% ==============================
%7) Внутри пунктов или подпунктов могут быть приведены перечисления (списки). Перед каждой позицией перечисления следует ставить дефис или строчную букву, после которой ставится скобка. Для дальнейшей детализации перечислений необходимо использовать арабские цифры со скобкой и писать с абзацного отступа.
% ==============================
\RequirePackage{enumitem}
\makeatletter
    \AddEnumerateCounter{\asbuk}{\@asbuk}{м)}
\makeatother
\setlist{nolistsep}
\renewcommand{\labelitemi}{-}
\renewcommand{\labelenumi}{\asbuk{enumi})}
\renewcommand{\labelenumii}{\arabic{enumii})}
\setitemize{itemsep=0pt}
\setitemize{parsep=0pt}
\setitemize{leftmargin=0cm,labelindent=\parindent, itemindent=1.25\parindent}
\setenumerate{leftmargin=0cm,labelindent=\parindent, itemindent=1.5\parindent}

% ==============================
% 8) Разделы, подразделы основной части пояснительной записки должны иметь заголовки. Заголовки следует писать с прописной буквы без точки в конце, не подчеркивая. Переносы слов в заголовках не допускаются. Если заголовок состоит из двух предложений, их разделяют точкой. Расстояние между заголовком и текстом равно двум полуторным интервалам. Расстояние между заголовками раздела и подраздела – 1 полуторный интервал.
% ==============================

% см. настройки разделов 6

% ==============================
% 9) Список используемой литературы оформляется в соответствии с действующими правилами составления библиографии. Ссылки на источники приводятся по тексту в квадратных скобках. Наличие ссылок обязательно.  
% ==============================
\RequirePackage {cite}
\makeatletter
\renewcommand{\@biblabel}[1]{#1} 
\bibliographystyle{ugost2008fixed}
\makeatother

\let\OldBibliography\bibliography
\newcommand{\NewBibTitle}{Список использованных источников}
\renewcommand{\bibliography}[1]
{
	\renewcommand\bibname{\NewBibTitle}
	\OldBibliography{#1}
	\renewcommand\bibname{\NewBibTitle}
	\addcontentsline{toc}{section}{\bibname}
}

% ==============================
% 10) Формулы и уравнения следует выделять из текста, в отдельную строку и распола­гаться по центру страницы. Формулы, следующие одна за другой и не разделенные текстом, разделяют запятой. Формулы нумеруются сквозной нумерацией арабскими цифрами, которые запи­сывают на уровне формулы справа в круглых скобках. Одну формулу обозначают – (1). Ссылки в тексте на порядковые номера формул дают в скобках, например, в формуле (1).
% ==============================
\RequirePackage{chngcntr}
\counterwithout{equation}{chapter}

% ==============================
%11) Иллюстрации (рисунки, схемы, диаграммы, чертежи и т.п.) располагают как по тексту документа, так и в конце его. Иллюстрации, за исключением иллюстраций приложений, следует нумеровать арабскими цифрами сквозной нумерацией. Рисунок подписывается снизу по центру (Рисунок 1 – «Название рисунка»)
% ==============================
\RequirePackage{caption}
\RequirePackage{subcaption}
\DeclareCaptionLabelSeparator{gost}{~---~}
\captionsetup{labelsep=gost}

\captionsetup{figurewithin=none}
\DeclareCaptionLabelFormat{gostfigure}{Рисунок #2}
\captionsetup[figure]{labelformat=gostfigure}
\renewcommand{\thesubfigure}{\asbuk{subfigure}}

% ==============================
% 12) Таблицы применяют для лучшей наглядности и удобства сравнения показателей. Название следует помещать над таблицей слева (Таблица 1 – «Название таблицы»). Таблицы, за исключением таблиц приложений, следует нумеровать арабскими цифрами сквозной нумерацией.
% ==============================
\RequirePackage{tabularx}
\RequirePackage {pbox}
\captionsetup{tablewithin=none}
\captionsetup[table]{justification=raggedright, singlelinecheck=off}
\DeclareCaptionLabelFormat{gosttable}{Таблица #2}
\captionsetup[table]{labelformat=gosttable}

% ==============================
% 13) Материал, дополняющий текст пояснительной записки, допускается помещать в приложениях. В тексте пояснительной записки на все приложения должны быть даны ссылки. Приложения располагают в порядке ссылок на них в тексте. Каждое приложение следует начинать с новой страницы с указанием наверху по­середине страницы слова «Приложение» и его обозначения. Приложение должно иметь заголовок, который записывают симметрично относитель­но текста с прописной буквы отдельной строкой. Приложения обозначает заглавными буквами русского алфавита, начиная с А, за исключением букв Е, 3, Й, О, Ч, Ь, Ы, Ъ. Приложения должны иметь общую сквозную нумерацию страниц и перечислены в содержании пояснительной записки с указанием их обозначений, номеров и заголовков. Обязательны ссылки на приложения.
% ==============================
\RequirePackage{titletoc}
\let\OldAppendix\appendix
\renewcommand{\appendix}
{
	\titleformat{\chapter}[display]
	    {\filcenter}
	    {\chaptertitlename~\thechapter}
	    {8pt}
	    {\bfseries}{}

%	\titlecontents*{chapter}
%		[-2.5em]% Left indent
%		{\bfseries\appendixname~\hspace*{1em}}% % above-code
%		{\contentslabel{1em}}% Numbered format
%		{\hspace*{-1em}}% Numberless format
%		{\titlerule*[1pc]{.}\thecontentspage}% Filler page format
%		[]% Separator

\contentsmargin{1.5cm} % global right margin, perhaps also global left

\titlecontents{chapter}[5.2em] % <-- seems to set some specific left margin
{\bfseries}
{\makebox[0cm][r]{\appendixname\hspace{.5em}\thecontentslabel\hspace{.75em}}}
{} %     ^^^ pretendously zero width box puts its contents in the left margin
{\titlerule*[1pc]{.}\makebox{\thecontentspage}}  % 3cm = twice 1.5cm

	\OldAppendix

	\renewcommand{\thechapter}{\Asbuk{chapter}}
	\renewcommand{\thesection}{\arabic{section}}
}
\renewcommand{\appendixname}{Приложение}

% ==============================
% 14) В верхнем колонтитуле указывается идентификационный номер 
% ==============================

\makeatletter
 	\renewcommand{\@evenhead}{Шифр1}
 	\renewcommand{\@oddhead}{\hfill \thedocumentcode \hfill}
\makeatother

% ===========================
%Оглавление
% ===========================

\let\Oldtableofcontents\tableofcontents
\renewcommand{\tableofcontents}{
\renewcommand{\contentsname}{Содержание}
\Oldtableofcontents
}

\titlecontents*{chapter}% <section-type>
  [0cm]% Left indent
  {\bfseries}% % above-code
  {\contentslabel{2.5em}}% Numbered format
  {\hspace*{-2.5em}}% Numberless format
  {\titlerule*[1pc]{.}\makebox{\thecontentspage}}% Filler page format
  []% Separator

\titlecontents{section}%
  [0em]% Left indent
  {\bfseries}% % above-code
  {\contentslabel{2.5em}}% Numbered format
  {\hspace*{-2.5em}}% Numberless format
  {\titlerule*[1pc]{.}\makebox{\thecontentspage}}% Filler page format
  []% Separator

\titlecontents{subsection}%
  [0em]% Left indent
  {\bfseries}% % above-code
  {\contentslabel{2.5em}}% Numbered format
  {\hspace*{-2.5em}}% Numberless format
  {\titlerule*[1pc]{.}\makebox{\thecontentspage}}% Filler page format
  []% Separator


% ============================

\RequirePackage{lmodern}
\RequirePackage{blindtext}
\RequirePackage{graphicx}
\RequirePackage{amsmath, amsxtra, amssymb, latexsym, amscd, amsthm}

% ============================
% Оформление алгоритмов
% ============================
\RequirePackage[plain]{algorithm}
\RequirePackage{algorithmicx}
\RequirePackage{algpseudocode}
\floatstyle{plaintop}
\restylefloat{algorithm}
\DeclareCaptionLabelFormat{gostalgorithm}{Алгоритм~#2}
\captionsetup[algorithm]{labelformat=gostalgorithm}
\captionsetup[algorithm]{justification=raggedright, singlelinecheck=off}


% ============================
% Титульный лист
% ============================

% Дополнительные команды
\def\thedocumentcode{код документа}
\newcommand\documentcode[1]{\renewcommand\thedocumentcode{#1}}

\def\thegroup{ИВТ-46X}
\newcommand\group[1]{\renewcommand{\thegroup}{#1}}

\RequirePackage{xifthen}
\RequirePackage{calc}
\RequirePackage{array}
\RequirePackage{supertabular}
\RequirePackage{hhline}
\RequirePackage{hyperref}
\RequirePackage{titling}

% Организация (министерство/университет/кафедра)
\newcommand {\organizationtitle}
{
	{\centering
	Министерство образования и науки Российской Федерации\\
	ФГБ ОУ ВПО «Волгоградский государственный технический университет»\\
	Кафедра Системы автоматизированного проектирования\\
	и поискового конструирования\\
	}
}

% Утверждение
\newcommand{\approvetitle}
{
	\begin{flushleft}
	\tablehead{}
	\begin{supertabular}{m{7.9920006cm}m{8.487cm}}
	~
	 &
	\centering {Утверждаю}\par
	
	\centering {Зав. кафедрой САПР и ПК}\par
	
	\centering { В.А. Камаев}\par
	
	~
	\titlefield[6cm]{}{подпись, инициалы и фамилия}\par
	
	\arraybslash 
	
	\titlefield[6cm]{}{дата}\\
	
	\end{supertabular}
	\end{flushleft}
}

\newcommand{\consultslist}
{
	\titlefield[6.5cm]{}{Краткое наименование раздела}
	\titlefield[5cm]{}{подпись и дата подписания}\hfill
	\titlefield[4cm]{}{Инициалы и фамилия}
	
	\bigskip
	
	\titlefield[6.5cm]{}{Краткое наименование раздела}
	\titlefield[5cm]{}{подпись и дата подписания}\hfill
	\titlefield[4cm]{}{Инициалы и фамилия}
}


\makeatletter
\newcommand\arraybslash{\let\\\@arraycr}
\makeatother

% Заполняемое поле
\newlength{\fieldlength}
\newcommand{\titlefield}[3][0]
{
	\ifthenelse{\equal{#1}{0}}	{\settowidth{\fieldlength}{#2}} {\setlength{\fieldlength}{#1}}
	\ifthenelse{\equal{#3}{}} 
	{\underline{\makebox[\fieldlength]{#2}}}
	{\parbox{\fieldlength}{\center \underline{\makebox[\fieldlength]{	#2}}
	\\[-0.005\textheight]\footnotesize 	#3}}
}

% Оформление
\renewcommand{\maketitle}
{
\begin {titlepage} {\parindent0pt
	\organizationtitle
	\approvetitle
	
	\bigskip
	
	
	\bigskip
	
	{\centering\bfseries
	ПОЯСНИТЕЛЬНАЯ ЗАПИСКА
	\par}
	
	{\centering
	к выпускной работе бакалавра на тему
	\par}
	
	\underline{\makebox[\linewidth]{\thetitle}}
	
	\underline{\hspace{\linewidth}}
	
	\bigskip
	
	Автор\titlefield[6cm]{}{подпись и дата подписания}\hfill\titlefield[6cm]{\theauthor}{инициалы и фамилия}
	
	Обозначение \hfill\titlefield[12cm]{\thedocumentcode}{обозначение документа}
	
	Группа \hfill\titlefield[12cm]{\thegroup}{шифр группы}

	\bigskip
	
	Направление \hfill\titlefield[12cm] {230100 -- Информатика и вычислительная техника}{}
	
	\bigskip
	
	Руководитель работы 
	\titlefield[5cm]{}{подпись и дата подписания}\hfill
	\titlefield[5cm]{}{инициалы и фамилия}
	
	\bigskip
	
	Консультанты по разделам:

	\bigskip
	
	\consultslist
	
	\bigskip
	
	Нормоконтроллер
	\titlefield[5.5cm]{}{подпись и дата подписания}\hfill
	\titlefield[5cm]{}{Инициалы и фамилия}
	
	\bigskip
	
	\vfill
	{\centering
	Волгоград 2013
	\par
	}}
\end{titlepage}
}

% ============================
% Лист задания
% ============================
\newcommand{\referenceforresearch}
{{
	\clearpage
	\thispagestyle{empty}
	\parindent 0pt
	\organizationtitle
	\approvetitle

	Задание на \hfill\titlefield[12cm]{выпускную работу бакалавра}{наименование работы}

	Студента \hfill\titlefield[12cm]{Иванова Алексея Петровича}{фамилия, имя, отчество}

	\bigskip

	Код кафедры\titlefield[3cm]{10.27}{}\hfill Группа\titlefield[4cm]{\thegroup}{}

	Тема \titlefield[15cm]{\thetitle}{}

	Утверждена приказом по ВолгГТУ 

	от\titlefield[4cm]{}{дата подписания}\No \titlefield[5cm]{}{}

	\bigskip

	Срок предъявления готовой работы  \hfill\titlefield[5cm]{}{дата подписания}

	Исходные данные для выполнения работ

	\underline{\hspace{\linewidth}}

	Содержание основной части пояснительной записки:
	
	1) \hfill\underline{\hspace{16cm} }\\
	2) \hfill\underline{\hspace{16cm} }\\
	3) \hfill\underline{\hspace{16cm} }\\
	4) \hfill\underline{\hspace{16cm} }

	Перечень графического материала:\\
	1) \hfill\underline{\hspace{16cm} }\\
	2) \hfill\underline{\hspace{16cm} }\\
	3) \hfill\underline{\hspace{16cm} }

	Руководитель работы (проекта) \titlefield[5cm]{}{подпись и дата подписания}\titlefield[4cm]{}{инициалы и фамилия}

	\consultslist
	
	\clearpage
	\pagenumbering{arabic}% Arabic page numbers (and reset to 1)
}}

% ===========================
% Подсчет количества листов и т.д
% ===========================
\RequirePackage{lastpage}

% Грязный трюк с параграфами
\newcounter{ParCounter}
\let \OldPar\par
\def\par{\addtocounter{ParCounter}{1}\OldPar}